package com.example.hello

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp

// 主Activity（Compose入口）
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent { // Compose UI入口
            MaterialTheme {
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    HelloWorldScreen() // 自定义Compose界面
                }
            }
        }
    }
}

// 语言枚举（关联国旗资源与问候语）
sealed class Language(
    val name: String,       // 语言名称（按钮显示用）
    val helloText: String,  // 问候语
    val flagResId: Int      // 国旗资源ID（R.drawable.xxx）
) {
    object English : Language(
        "English", "Hello, World!", R.drawable.flag    // 美国国旗（flag.jpg）
    )
    object Chinese : Language(
        "中文", "你好，世界！", R.drawable.flag2       // 中国国旗（flag2.jpg）
    )
    object Japanese : Language(
        "日本語", "こんにちは、世界！", R.drawable.flag3 // 日本国旗（flag3.jpg）
    )
}

// 核心Compose界面（必须加@Composable注解）
@Composable
fun HelloWorldScreen() {
    // 状态管理：当前语言（默认英文）、点击次数
    var currentLanguage by remember { mutableStateOf<Language>(Language.English) }
    var clickCount by remember { mutableStateOf(0) }

    // 垂直布局（从上到下：国旗→问候语→点击次数→语言按钮→重置按钮）
    Column(
        modifier = Modifier.fillMaxSize().padding(16.dp),
        horizontalAlignment = Alignment.CenterHorizontally, // 水平居中
        verticalArrangement = Arrangement.Top // 垂直顶部对齐
    ) {
        // 1. 国旗图片（引用JPG资源）
        Image(
            painter = painterResource(id = currentLanguage.flagResId),
            contentDescription = "${currentLanguage.name}国旗", // 无障碍描述
            modifier = Modifier.size(200.dp) // 图片尺寸
                .padding(bottom = 32.dp)    // 与下方控件间距
        )

        // 2. 问候语（随语言切换）
        Text(
            text = currentLanguage.helloText,
            fontSize = 28.sp,
            modifier = Modifier.padding(bottom = 16.dp)
        )

        // 3. 点击次数统计
        Text(
            text = "点击次数: $clickCount",
            fontSize = 20.sp,
            modifier = Modifier.padding(bottom = 32.dp)
        )

        // 4. 语言切换按钮（水平排列）
        Row(
            modifier = Modifier.fillMaxWidth(),
            horizontalArrangement = Arrangement.SpaceEvenly // 按钮均匀分布
        ) {
            Button(onClick = {
                currentLanguage = Language.English
                clickCount++
            }) { Text("English") }

            Button(onClick = {
                currentLanguage = Language.Chinese
                clickCount++
            }) { Text("中文") }

            Button(onClick = {
                currentLanguage = Language.Japanese
                clickCount++
            }) { Text("日本語") }
        }

        // 占位控件：将重置按钮推到屏幕底部
        Spacer(modifier = Modifier.weight(1f))

        // 5. 重置按钮（恢复默认英文+清空点击次数）
        Button(
            onClick = {
                currentLanguage = Language.English
                clickCount = 0
            },
            modifier = Modifier.fillMaxWidth()
        ) { Text("重置") }
    }
}